<template>

  <div id="dataM" :class="className" :style="{height:height,width:width}" />

</template>

<script>
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from './mixins/resize'
import { getTypeGraphInfo, getBusinessInfo, getDisQuesInfo, getAnalysisInfo, getLocationGraphInfo, getLocationFinishGraphInfo } from "@/api/index";


const animationDuration = 6000

export default {
  mixins: [resize],
  props: {
    className: {
      type: String,
      default: 'chart',
      width:'auto',
    },
    width: {
      type: String,
      default: '100%'
    },
    height: {
      type: String,
      default: '350px'
    }
  },
  data() {
    return {
      chart: null,
      types:[],
      datas:[],
      finishs:[]
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.getLocationGraph();
    })
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    initChart() {
      var dom01 = document.getElementById("dataM");
      this.chart = echarts.init(dom01, 'macarons')

      this.chart.setOption({
      	title: {
		        text: '完成情况',
		        subtext: '',

		    },
        dataZoom: [//给x轴设置滚动条
           {
              //  start:0,//默认为0
              //  end: 100-1500/31,//默认为100
               type: 'slider',
               show: true,
               xAxisIndex: [0],
               handleSize: 0,//滑动条的 左右2个滑动条的大小
               height: 8,//组件高度
               left: 5, //左边的距离
               right: 5,//右边的距离
               bottom: 5,//右边的距离
               endValue: 4,//从0开始的相当于5个
               handleColor: '#ddd',//h滑动图标的颜色
               handleStyle: {
                   borderColor: "#cacaca",
                   borderWidth: "1",
                   shadowBlur: 2,
                   background: "#ddd",
                   shadowColor: "#ddd",
               },
               fillerColor: new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
                   //给颜色设置渐变色 前面4个参数，给第一个设置1，第四个设置0 ，就是水平渐变
                   //给第一个设置0，第四个设置1，就是垂直渐变
                   offset: 0,
                   color: '#1eb5e5'
               }, {
                   offset: 1,
                   color: '#5ccbb1'
               }]),
               backgroundColor: '#ddd',//两边未选中的滑动条区域的颜色
               showDataShadow: false,//是否显示数据阴影 默认auto
               showDetail: false,//即拖拽时候是否显示详细数值信息 默认true
               handleIcon: 'M-292,322.2c-3.2,0-6.4-0.6-9.3-1.9c-2.9-1.2-5.4-2.9-7.6-5.1s-3.9-4.8-5.1-7.6c-1.3-3-1.9-6.1-1.9-9.3c0-3.2,0.6-6.4,1.9-9.3c1.2-2.9,2.9-5.4,5.1-7.6s4.8-3.9,7.6-5.1c3-1.3,6.1-1.9,9.3-1.9c3.2,0,6.4,0.6,9.3,1.9c2.9,1.2,5.4,2.9,7.6,5.1s3.9,4.8,5.1,7.6c1.3,3,1.9,6.1,1.9,9.3c0,3.2-0.6,6.4-1.9,9.3c-1.2,2.9-2.9,5.4-5.1,7.6s-4.8,3.9-7.6,5.1C-285.6,321.5-288.8,322.2-292,322.2z',
               filterMode: 'filter',
           },
           //下面这个属性是里面拖到
           {
               type: 'inside',
               show: true,
               xAxisIndex: [0],
               start: 0,//默认为1
               end: 100-1500/31,//默认为100
           },
       ],
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器，坐标轴触发有效
            type: 'shadow' // 默认为直线，可选为：'line' | 'shadow'
          }
        },
         legend: {
		        data:['总量', '完成数量'],
           left:"right"
		    },
        xAxis: [{
          type: 'category',
          data: this.types,
          axisLabel:{  
            interval: 0,
            // rotate:"45",
            formatter : function(params){
              var newParamsName = "";// 最终拼接成的字符串
              var paramsNameNumber = params.length;// 实际标签的个数
              var provideNumber = 3;// 每行能显示的字的个数
              var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话，需要显示几行，向上取整
              /**
               * 判断标签的个数是否大于规定的个数， 如果大于，则进行换行处理 如果不大于，即等于或小于，就返回原标签
               */
              // 条件等同于rowNumber>1
              if (paramsNameNumber > provideNumber) {
                  /** 循环每一行,p表示行 */
                  for (var p = 0; p < rowNumber; p++) {
                      var tempStr = "";// 表示每一次截取的字符串
                      var start = p * provideNumber;// 开始截取的位置
                      var end = start + provideNumber;// 结束截取的位置
                      // 此处特殊处理最后一行的索引值
                      if (p == rowNumber - 1) {
                          // 最后一次不换行
                          tempStr = params.substring(start, paramsNameNumber);
                      } else {
                          // 每一次拼接字符串并换行
                          tempStr = params.substring(start, end) + "\n";
                      }
                      newParamsName += tempStr;// 最终拼成的字符串
                  }

              } else {
                  // 将旧标签的值赋给新标签
                  newParamsName = params;
              }
              //将最终的字符串返回
              return newParamsName;
            }
          }
        }],
        yAxis: [{
          type: 'value',
        }],
        series: [{
          name: '总量',
           type: 'bar',
          data: this.datas,

        }, {
          name: '完成数量',
          type: 'bar',
          data: this.finishs,

        }]
      })
    },
    /** 获取每个地区完成情况图表数据 */
    getLocationGraph() {
      this.loading = true;
      getLocationGraphInfo().then(res => {
        if(res.code == 200){
          let resData = res.data;
          for(let i in resData){
              this.types.push(resData[i].locationName);
              this.datas.push(resData[i].totalCount);
              this.finishs.push(resData[i].finishCount);
            console.log(resData[i])

          }
          this.initChart();
        }
      });
    },
  }
}
</script>
